/**
 * Clase que guarda algo y apunta a otro elemento de la misma clase
 * @author Diego Enriquez 10038
 * @param <Tipo> El tipo de datos que guardara el nodo
 */
public class Nodo<Tipo> {
	private Tipo valor;
	private Nodo<Tipo> puntero;
	
	/**Procedimiento que crea un nodo
	 * @param valor Lo que se guardara en el nodo
	 * @param puntero El siguiente elemento de la lista
	 */
	public Nodo(Tipo valor, Nodo<Tipo> puntero){
		this.setValor(valor);
		this.setNext(puntero);
	}

	/**
	 * Procedimiento que permite obtener el valor que guardo el nodo
	 * @return Devuelve lo que este guardado en el nodo
	 */
	public Tipo valor() {
		return valor;
	}

	/**
	 * Procedimiento que permite guardar un nuevo valor en el nodo
	 * @param valor El valor que se encuentra guardado en el nodo
	 */
	public void setValor(Tipo valor) {
		this.valor = valor;
	}

	/**
	 * Procedimiento que devuelve el Nodo al que apunta el nodo actual
	 * @return Devuelve el siguiente nodo
	 */
	public Nodo<Tipo> next() {
		return puntero;
	}

	/**
	 * Procedimiento que permite determinar a que nodo apunta el nodo actual
	 * @param puntero el nodo al que apuntara el nodo actual
	 */
	public void setNext(Nodo<Tipo> puntero) {
		this.puntero = puntero;
	}
	
}
